package com.ruoyi.system.service.impl;

import java.util.Collections;
import java.util.List;

import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.domain.TbAppVersion;
import com.ruoyi.system.domain.dto.TbAppCatalogCreateDTO;
import com.ruoyi.system.domain.vo.TbAppCatalogVO;
import com.ruoyi.system.mapper.TbAppVersionMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.TbAppCatalogMapper;
import com.ruoyi.system.domain.TbAppCatalog;
import com.ruoyi.system.service.ITbAppCatalogService;
import org.springframework.transaction.annotation.Transactional;

/**
 * 应用基本信息Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-07-23
 */
@Service
public class TbAppCatalogServiceImpl implements ITbAppCatalogService 
{
    @Autowired
    private TbAppCatalogMapper tbAppCatalogMapper;

    @Autowired
    private TbAppVersionMapper  tbAppVersionMapper ;

    /**
     * 查询应用基本信息
     * 
     * @param id 应用基本信息主键
     * @return 应用基本信息
     */
    @Override
    public TbAppCatalog selectTbAppCatalogById(Long id)
    {
        return tbAppCatalogMapper.selectTbAppCatalogById(id);
    }

    /**
     * 查询应用基本信息列表
     * 
     * @param tbAppCatalog 应用基本信息
     * @return 应用基本信息
     */
    @Override
    public List<TbAppCatalogVO> selectTbAppCatalogList(TbAppCatalog tbAppCatalog)
    {
        return tbAppCatalogMapper.selectTbAppCatalogList(tbAppCatalog);
    }

    /**
     * 新增应用基本信息
     * 
     * @param tbAppCatalog 应用基本信息
     * @return 结果
     */
    @Override
    public int insertTbAppCatalog(TbAppCatalog tbAppCatalog)
    {
        tbAppCatalog.setCreateTime(DateUtils.getNowDate());
        return tbAppCatalogMapper.insertTbAppCatalog(tbAppCatalog);
    }

    /**
     * 修改应用基本信息
     * 
     * @param tbAppCatalog 应用基本信息
     * @return 结果
     */
    @Override
    public int updateTbAppCatalog(TbAppCatalog tbAppCatalog)
    {
        tbAppCatalog.setUpdateTime(DateUtils.getNowDate());
        return tbAppCatalogMapper.updateTbAppCatalog(tbAppCatalog);
    }

    /**
     * 批量删除应用基本信息
     * 
     * @param ids 需要删除的应用基本信息主键
     * @return 结果
     */
    @Override
    public int deleteTbAppCatalogByIds(Long[] ids)
    {
        return tbAppCatalogMapper.deleteTbAppCatalogByIds(ids);
    }

    /**
     * 删除应用基本信息信息
     * 
     * @param id 应用基本信息主键
     * @return 结果
     */
    @Override
    public int deleteTbAppCatalogById(Long id)
    {
        return tbAppCatalogMapper.deleteTbAppCatalogById(id);
    }

    @Override
    public List<TbAppCatalogVO> selectTbAppCatalogLis() {
        return tbAppCatalogMapper.selectForList();
    }

    @Override
    @Transactional(rollbackFor = Exception.class)
    public R insertTbAppCatalogAndVersion(TbAppCatalogCreateDTO dto) {
        TbAppCatalog tbAppCatalog = new TbAppCatalog();
        tbAppCatalog.setAppName(dto.getAppName());
        tbAppCatalog.setPackageName(dto.getPackageName());
        tbAppCatalog.setPackageType(dto.getPackageType());
        tbAppCatalog.setDevSupplier(dto.getDevSupplier());
        tbAppCatalog.setMinOsVer(dto.getMinSystemVersion());
        tbAppCatalog.setRecordNumber(dto.getRecordNum());
        tbAppCatalog.setFileSize(dto.getFileSizeMB());
        tbAppCatalog.setStatus(1);
        tbAppCatalog.setLastUpdate(DateUtils.getNowDate());
        tbAppCatalog.setLogoImg(dto.getIconName());
        tbAppCatalog.setRemark(dto.getAppDesc());
        tbAppCatalog.setLastVersion(dto.getVersionnumber());
        tbAppCatalog.setCreateBy(SecurityUtils.getUsername());
        tbAppCatalog.setCreateTime(DateUtils.getNowDate());
        if (tbAppCatalogMapper.insertTbAppCatalog(tbAppCatalog) > 0) {
            //先去查询是否有相同的记录
            TbAppVersion hisAppVersion =tbAppVersionMapper.selectByPackageNameAndVersionCodeAndVersionnumber(dto.getPackageName()
           ,dto.getVersionCode(),dto.getVersionnumber());
            if (hisAppVersion != null) {
             return  R.fail("已存在相同记录") ;
            }
            TbAppVersion appVersion = new TbAppVersion();
            appVersion.setPackageId(tbAppCatalog.getId());
            appVersion.setPackageName(dto.getPackageName());
            appVersion.setPackageVersioncode(dto.getVersionCode());
            appVersion.setPackageVersionnumber((dto.getVersionnumber()));
            appVersion.setPackageSize(dto.getFileSizeMB());
            appVersion.setOsRequirement(dto.getMinSystemVersion());
            appVersion.setSdkRequirement(dto.getSdkRequirement());
            appVersion.setPackageHash(dto.getPackageHash());
            appVersion.setPackageUrl(dto.getPackageUrl());
            appVersion.setInstallDeviceCount(0);
            appVersion.setDownloadCount(0);
            appVersion.setStatus(1);
            appVersion.setPublishDate(DateUtils.getNowDate());
            appVersion.setIsForceUpdate(0);
            appVersion.setRemark(dto.getAppDesc());
            appVersion.setCreateBy(SecurityUtils.getUsername());
            appVersion.setCreateTime(DateUtils.getNowDate());
            return  R.ok(tbAppVersionMapper.insertTbAppVersion(appVersion));
        }
       return R.fail("保存数据失败");
    }
}
